<?php
// 应用公共文件

function csrf_token()
{
    // test
    return \ke\Glo::get('csrf_token');
}

function getForm($key='',$val=null)
{
    $content=file_get_contents('php://input');
    $data=json_decode($content,true);
    if($key!=''){
        return isset($data[$key]) ? $data[$key] : $val;
    }else{
        return $data;
    }
}
function rand_letter($length)
{
    $str='abcdefghijklmnopqrstuvwxyz0123456789';
    $max=strlen($str);
    $ret='';

    for($i=0;$i<$length;$i++){
        $ret.=substr($str,mt_rand(1,$max),1);
    }
    return $ret;
}
function get_client_ip($type = 0) {
    $type       =  $type ? 1 : 0;
    static $ip  =   NULL;
    if ($ip !== NULL) return $ip[$type];
    if(isset($_SERVER['HTTP_X_REAL_IP'])){//nginx 代理模式下，获取客户端真实IP
        $ip=$_SERVER['HTTP_X_REAL_IP'];
    }elseif (isset($_SERVER['HTTP_CLIENT_IP'])) {//客户端的ip
        $ip     =   $_SERVER['HTTP_CLIENT_IP'];
    }elseif (isset($_SERVER['HTTP_X_FORWARDED_FOR'])) {//浏览当前页面的用户计算机的网关
        $arr    =   explode(',', $_SERVER['HTTP_X_FORWARDED_FOR']);
        $pos    =   array_search('unknown',$arr);
        if(false !== $pos) unset($arr[$pos]);
        $ip     =   trim($arr[0]);
    }elseif (isset($_SERVER['REMOTE_ADDR'])) {
        $ip     =   $_SERVER['REMOTE_ADDR'];//浏览当前页面的用户计算机的ip地址
    }else{
        $ip=$_SERVER['REMOTE_ADDR'];
    }
    // IP地址合法验证
    $long = sprintf("%u",ip2long($ip));
    $ip   = $long ? array($ip, $long) : array('0.0.0.0', 0);
    return $ip[$type];
}
function get_order_id()
{
    return date('Ymd').str_pad(mt_rand(0,999999),6,'0',STR_PAD_LEFT).'-'.str_pad(get_client_ip(1),12,'0').'-'.strtoupper(uniqid());
}



/**
 * @param array $list 要转换的结果集
 * @param string $pid parent标记字段
 * @param string $level level标记字段
 */
function list_to_tree($list, $pk='id', $pid = 'pid', $child = 'children', $root = 0) {
    $tree = array();
    if (is_array($list)) {
        $refer = array();

        foreach ($list as $key => $data) {
            $refer[$data[$pk]] = &$list[$key];
        }

        foreach ($list as $key => $data) {
            $parantId = $data[$pid];

            if ($root == $parantId) {
                $tree[] = &$list[$key];
            } else {
                if (isset($refer[$parantId])) {
                    $parent = &$refer[$parantId];
                    $parent[$child][] = &$list[$key];
                }
            }
        }
    }

    return $tree;
}